/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package feuerwehr;

import java.awt.Color;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JTextPane;

/**
 *
 * @author gundlape
 */
public class PrintEinsatzDepesche  {
    public static void createFile(Einsatz einsatz) {
        String str = "";
        str = str + "<html>";
        str = str + "<span style=\"font-size: 10pt\">";
        str = str + "<font face=\"monospace\">";
        str = str + "      <b>ALARMDEPESCHE</b><br>";
        str = str + "      <b>=============<b><br>";
        str = str + "<br>";
        str = str + "Einsatzbeginn:                 " + einsatz.getBeginn() + "<br>";
        str = str + "                               ";
        str = str + "<br>";
        str = str + "Auftragsnummer:                " + einsatz.getEinsatznr() + "<br>";
        str = str + "<br>";
        str = str + "Einsatzstichwort:              " + einsatz.getStichwort() + "<br>";
        str = str + "<br>";
        if (Einsatzart.getAktuelleEinsatzart(einsatz.getPK()).size() > 0) {
            str = str + "Einsatzart:                    " + Einsatzart.getAktuelleEinsatzart(einsatz.getPK()).get(0).toString() + "<br>";
        } else {
            str = str + "Einsatzart:                    " + "<br>";
        }
        str = str + "<br>";
        str = str + "Meldender:                     " + einsatz.getMeldender().replaceAll("\n", "<br>                               ") + "<br>";
        str = str + "<br>";
        str = str + "Erreichbarkeit:                " + einsatz.getErreichbar() + "<br>";
        str = str + "<br>";
        str = str + "Einsatzstelle<br>";
        str = str + "=============<br>";
        str = str + "Strasse:                       " + einsatz.getEinsatzStr() + "<br>";
        str = str + "PLZ:                           " + einsatz.getEinsatzPLZ() + "<br>";
        str = str + "Ort:                           " + einsatz.getEinsatzOrt() + "<br>";
        str = str + "Info:                          " + einsatz.getGeschaedigt().replaceAll("\n", "<br>                               ") + "<br>";
        str = str + "<br>";
        str = str + "<br>";
        str = str + "Eingesetzte Fahrzeuge<br>";
        str = str + "=====================<br>";
        ArrayList<Fahrzeug> al = Fahrzeug.getAktuelleFahrzeug(einsatz.getPK());
        for (Fahrzeug p : al) {
            str = str + p.toString2() + "<br>";
        }
        str = str + "<br>";
        str = str + "<br>";
        str = str + "Verfügbare Fahrzeuge<br>";
        str = str + "====================<br>";
        str = fahrzeuge(str, einsatz);
/*
        str = str + "Stadtbrandmeister               70-99 (15-01-01)<br>";
        str = str + "<br>";
        str = str + "Stadtbrandmeister Vertr.        70-98<br>";
        str = str + "<br>";
        str = str + "Bahlburg                        72-28<br>";
        str = str + "<br>";
        str = str + "Borstel                         71-21<br>";
        str = str + "<br>";
        str = str + "Hoopte                          72-20<br>";
        str = str + "                                72-43<br>";
        str = str + "                                72-Boot<br>";
        str = str + "<br>";
        str = str + "Laßrönne                        72-26<br>";
        str = str + "";
        str = str + "Luhdorf                         73-10<br>";
        str = str + "                                73-20<br>";
        str = str + "<br>";
        str = str + "Pattensen                       73-25<br>";
        str = str + "";
        str = str + "Rottorf                         71-26<br>";
        str = str + "                                71-69<br>";
        str = str + "<br>";
        str = str + "Roydorf                         73-21<br>";
        str = str + "                                73-43<br>";
        str = str + "<br>";
        str = str + "Sangenstedt                     71-25<br>";
        str = str + "<br>";
        str = str + "Scharmbeck                      73-27<br>";
        str = str + "                                73-47<br>";
        str = str + "<br>";

        str = str + "Stöckte                         72-28<br>";
        str = str + "<br>";
        str = str + "Tönnhausen                      72-27<br>";
        str = str + "<br>";
        str = str + "Winsen (Luhe)                   71-60<br>";
        str = str + "                                71-20<br>";
        str = str + "                                71-10<br>";
        str = str + "                                71-30<br>";
        str = str + "                                71-11<br>";
        str = str + "                                71-40<br>";
        str = str + "                                71-68<br>";
        str = str + "                                71-27<br>";
*/        
        str = str + "<br>";
        str = str + "</font>";
        str = str + "</span>";
        str = str + "</html>";

        myPrint(str);
    }

    private static void myPrint(String dataToPrint) {
        JTextPane jtp = new JTextPane();
        jtp.setContentType("text/html");
        jtp.setBackground(Color.white);
      
        dataToPrint = dataToPrint.replaceAll(" ", "&nbsp;");
        
        jtp.setText(dataToPrint);
        boolean show = true;
        try {
            jtp.print(null, null, show, null, null, show);
        } catch (java.awt.print.PrinterException ex) {
            System.err.println("ERROR: " + ex);
        }
    }
    
    private static String fahrzeuge (String str, Einsatz einsatz) {
        Timestamp ausrueckzeit = Einsatz.getSQLDateFromString(einsatz.getBeginn(), "dd.MM.yyyy HH:mm:ss");
        Timestamp einrueckzeit = Einsatz.getSQLDateFromString(einsatz.getEnde(), "dd.MM.yyyy HH:mm:ss");
        
        if (einrueckzeit == null)
            einrueckzeit = new Timestamp(ausrueckzeit.getTime() + (3 * 60 * 60 * 1000L));      // Plus drei Stunde

        System.err.println("DEBUG>> Zeitraum von " + ausrueckzeit.toString() + " bis " + einrueckzeit.toString());
        
        try {
            PreparedStatement ps = Feuerwehr.getConnection().prepareStatement("select * from t_fahrzeug " +
                                "where pk not in ( " +
                                "select tf.pk " +
                                "from t_fahrzeug tf join t_e_fahrzeug tef " +
                                "on tf.pk = tef.fk_fahrzeug " +
                                "where ifnull(tef.fk_einsatz, ?) != ? " +
                                "and ? between case when tef.ausrueckzeit>? then ? else tef.ausrueckzeit end and ifnull(tef.einrueckzeit, ?) " +
                                "and ? between case when tef.ausrueckzeit>? then ? else tef.ausrueckzeit end and ifnull(tef.einrueckzeit, ?) " +
                                ") " +
                                "and pk not in (select fk_fahrzeug from t_e_fahrzeug where fk_einsatz = ?) " +
                                "order by sortierung desc, standort, opta");
            ps.setInt(1, einsatz.getPK());
            ps.setInt(2, einsatz.getPK());
            ps.setTimestamp(3, ausrueckzeit);
            ps.setTimestamp(4, ausrueckzeit);
            ps.setTimestamp(5, ausrueckzeit);
            ps.setTimestamp(6, einrueckzeit);
            ps.setTimestamp(7, einrueckzeit);
            ps.setTimestamp(8, ausrueckzeit);
            ps.setTimestamp(9, ausrueckzeit);
            ps.setTimestamp(10, einrueckzeit);
            ps.setInt(11, einsatz.getPK());
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                String s = "";
                Fahrzeug f = Fahrzeug.getEinFahrzeug(rs.getInt("pk"));
                str = str + f.toString2() + "<br>";
            }
            rs.close();
            ps.close();
       } catch (SQLException exc) {
            System.err.println("ERROR[druck]: " + exc.toString());
       }     
       return str;
    }
}    
